Downloads data was exported from the prototype health and social care dashboard, which displays Google Analytics data from the NICE website.
Google Analytics samples a fraction of all web activity, therefore for greater accuracy, the time periods specified when extracting results were one-month rather than one-year periods. This was done by manually selecting each month in the date range widget and exporting the Downloads table in the ‘All webpages:links and downloads’ tab.
Downloads were pulled for June 2019 to April 2022.
The dashboard currently does not allow for filtering by the downloaded file’s URL. The exported Downloads table therefore covers all downloads from across the whole NICE website. QSSIT downloads were identified by filtering the data set for rows where the file URL includes ‘QS-service-improvement-template’ or ‘quality-standard-service-improvement-template’. This relies on the naming system being consistent over time, which is not necessarily the case.
data <- read_csv('./download_analytics/qssit_downloads_2019-06_2022-04.csv', col_types = "Dccd") %>%
mutate(qs = if_else(str_detect(page_path, "/qs\\d+/resources"),
str_extract(page_path, "(?<=/)qs\\d+(?=/resources)") %>% str_to_upper(.),
"general")) %>%
relocate(downloads,
.after = last_col())
data %>%
select(!qs) %>%
datatable(.,
filter = "top",
colnames = c("Month" = "year_month",
"Download page" = "page_path",
"File URL" = "file",
"Downloads" = "downloads"),
rownames = FALSE,
extensions = 'Buttons',
options = list(
dom = 'Bfrtip',
buttons = c('csv')
))
Looking at total monthly downloads across the whole NICE website:
total_downloads <- data %>%
group_by(year_month) %>%
summarise(downloads = sum(downloads))
total_downloads %>%
mutate(year_month = zoo::as.yearmon(year_month)) %>%
rename("Month" = year_month,
"Downloads" = downloads) %>%
kbl() %>%
kable_styling(bootstrap_options = c("striped", "hover"))
| Month | Downloads |
|---|---|
| Jul 2019 | 1488 |
| Aug 2019 | 1531 |
| Sep 2019 | 1476 |
| Oct 2019 | 1396 |
| Nov 2019 | 1473 |
| Dec 2019 | 887 |
| Jan 2020 | 1389 |
| Feb 2020 | 1522 |
| Mar 2020 | 1089 |
| Apr 2020 | 809 |
| May 2020 | 916 |
| Jun 2020 | 867 |
| Jul 2020 | 957 |
| Aug 2020 | 747 |
| Sep 2020 | 950 |
| Oct 2020 | 937 |
| Nov 2020 | 825 |
| Dec 2020 | 494 |
| Jan 2021 | 762 |
| Feb 2021 | 853 |
| Mar 2021 | 962 |
| Apr 2021 | 1078 |
| May 2021 | 749 |
| Jun 2021 | 935 |
| Jul 2021 | 661 |
| Aug 2021 | 594 |
| Sep 2021 | 732 |
| Oct 2021 | 1011 |
| Nov 2021 | 1008 |
| Dec 2021 | 801 |
| Jan 2022 | 710 |
| Feb 2022 | 620 |
| Mar 2022 | 719 |
| Apr 2022 | 756 |
fig <- total_downloads %>%
mutate(year_month = zoo::as.yearmon(year_month)) %>%
ggplot(aes(x = year_month, y = downloads)) +
geom_line() +
labs(x = "Month",
y = "Downloads",
title = "Total monthly downloads of QSSIT")
fig %>% ggplotly()
The QSSIT sits on many pages, namely:
Where do people download the QSSIT from?
data <- data %>%
mutate(source_page = case_when(str_detect(page_path, "/qs\\d+/resources") ~ "Specific QSs (qs__/resources)",
TRUE ~ page_path) %>%
str_remove("\\?.*") %>%
str_remove("^((www.nice.org.uk/about/what-we-do/)|(www.nice.org.uk/))") %>%
fct_infreq())
fig_source_bar <- data %>%
group_by(year_month, source_page) %>%
summarise(downloads = sum(downloads), .groups = "drop") %>%
ggplot(aes(x = year_month, y = downloads, fill = source_page)) +
geom_col(position = "stack") +
labs(x = "Month",
y = "Downloads",
title = "Monthly downloads of QSSIT, by category of page downloaded from",
fill = "Page source")
fig_source_bar %>% ggplotly(width = 850)
From the bar chart above, it is clear that the contribution of different pages to overall monthly QSSIT downloads has changed over time.
Notably, downloads from the ‘How to use quality standards’ page have dropped markedly. Since November 2021, some of the usual traffic there may have been redirected to the new ‘About quality standards’ page.
Looking at time trends for each page category:
fig_source_line <- data %>%
group_by(year_month, source_page) %>%
summarise(downloads = sum(downloads), .groups = "drop") %>%
ggplot(aes(x = year_month, y = downloads, colour = source_page)) +
geom_line() +
labs(x = "Month",
y = "Downloads",
title = "Monthly downloads of QSSIT, by category of page downloaded from",
colour = "Page source")
fig_source_line %>% ggplotly(width = 850)
For all-time downloads by page category:
Aggregating downloads by page category over the whole time period (June 2019 - April 2022), people mostly download the QSSIT from the ‘Tools and resources’ tab of individual quality standards.
Note, this aggregation masks the time trends shown in the line graph above.
data %>%
group_by(source_page) %>%
summarise(downloads = sum(downloads)) %>%
arrange(desc(downloads)) %>%
rename("Download page category" = source_page,
Downloads = downloads) %>%
kbl() %>%
kable_styling(bootstrap_options = c("striped", "hover"))
| Download page category | Downloads |
|---|---|
| Specific QSs (qs__/resources) | 16444 |
| standards-and-indicators/how-to-use-quality-standards | 9470 |
| into-practice/measuring-the-uptake-of-nice-guidance | 3319 |
| into-practice/audit-and-service-improvement | 3010 |
| standards-and-indicators/quality-standards | 461 |
How do downloads from individual quality standards’ webpages compare with downloads from the general standards and indicators or into practice pages?
The graph below disaggregates the ‘Specific QSs’ group and displays downloads from each individual quality standard webpage separately.
(Interaction suggestions:
fig_qs <- data %>%
ggplot(aes(x = year_month, y = downloads, colour = source_page, label = qs)) +
geom_point() +
labs(x = "Month",
y = "Downloads",
title = "Monthly downloads of QSSIT, by individual pages",
colour = "Page source")
fig_qs %>% ggplotly(width = 850)
Summing downloads over the whole of June 2019 to April 2022, the QSSIT is downloaded more from some quality standards than others.
Note, these overall downloads are confounded by when a quality standard was released.
data %>%
filter(qs != "general") %>%
select(-c(page_path, file, source_page)) %>%
rename("Quality standard" = qs,
Month = year_month,
Downloads = downloads) %>%
reactable(
.,
filterable = TRUE,
searchable = TRUE,
groupBy = "Quality standard",
showSortable = TRUE,
columns = list(
Downloads = colDef(aggregate = "sum",
sortable = TRUE)
)
)